昨天提到了 Deployment 與 Pod 之間的差異,今天再來仔細的說一下什麼是 Deployment 元件,Deployment 可以算是 Kubernetes 中最常用到的元件之一,Deployment 跟 Pod 相同但卻更強大,通常在建立新的 Deployment 時,會同時建立 ReplicaSet , 接著 ReplicaSet 會在建立 Pod,在建立的過程中 Deployment 會一併檢查是否能正常啟動,例如:「image 是否存在」、「yaml 檔案規則是否正確」
另外,每次透過 Deployment 在更新服務版本時,也會觸發檢查機制,若檢查不通過 Deployment 不會讓新服務上線,繼續維持舊版服務,確保服務正常。
Deployment 可以達成以下幾件事情:Pod 服務,滿足更高負載執行 kubectl apply -f deployment.yml
## deployment.yml
apiVersion: extensions/v1beta1 ## 選擇 api server 要存取的 api 版本
kind: Deployment               ## 指定為 Deployment 物件
metadata:                      ## 用來描述 Deployment 物件的資料
  name: nginx                  ## Deployment 的名稱
  labels:                      ## 賦予 Deployment 元件的標籤(service: http-server)
    service: http-server
spec:
  replicas: 3                  ## 運行 3 個 Pod
  selector:                    ## 指定 Deployment 管理的 Pod 規則
    matchLabels:               ## Pod 必須具備 service: http-server 的標籤
      service: http-server
  template:
    metadata:                  ## 賦予 Pod具備 service: http-server 的標籤
      labels:
        service: http-server
    spec:
      containers:              ## 描述容器的資料
      - name: nginx-deploy     ## 容器名稱
        image: nginx           ## 容器映像檔
        ports:                 ## 指定容器 Port 號
        - containerPort: 80
Service 與 Deployment 溝通## service.yml
apiVersion: v1            ## k8s api 版本號
kind: Service             ## 指定為 Service 物件
metadata:                 ## 用來描述 Service 物件的資料
  name: nginx-service     ## Service 的名稱
spec:
  type: NodePort          ## 指定Service的型別
  selector:
    service: http-server  ## 對應那一個 Deployment 的標籤
  ports:
  - port: 80              ## 容器外 Port
    targetPort: 80        ## 容器內 Port